/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
  int getDecimalValue(ListNode* head) {

    int ans = 0;
    ListNode *p = head;
    while(p != nullptr){
      ans <<= 1;
      ans += p->val;
      p = p->next;
    }

    return ans;

  }
};